Some storage systems have configurations that use fast solid-state disks (e.g., Flash drives), to store frequently-accessed data in order to increase access speed to such frequently-accessed data nominally stored on disk drives. FAST Cache, a technology made available by EMC Corp., is an example of such a configuration. The solid-state disks are typically placed in a path between a hard disk and a DRAM cache in the storage system. In this way, the storage system can also use the solid-state disks as a place to offload data from the DRAM cache with a reduced penalty in access time from moving such data to the hard disk.
While such configurations achieve high performance, Redundant Arrays of Independent Disks (RAID) are commonly used to provide high reliability access to large amounts of data storage. There are several types of RAID, ranging from simpler RAID 0 and RAID 1 (data mirroring) through more complex RAID 5 and RAID 6. RAID 5 encodes stripes of data across a plurality of disks with one disk (which rotates from stripe to stripe) storing a parity redundancy code for that stripe, which allows stored data to be recovered even in the event of a disk failure. This parity code involves performing a compound exclusive-or (XOR) operation on corresponding blocks on the different disks. RAID 6 employs a similar approach, but using two redundancy disks, allowing stored data to be recovered even in the event of two disk failures. There are several ways of calculating the values stored on the redundancy disks for RAID 6, such as even-odd parity (which involved storing row parity on one disk and diagonal parity on another disk) and Reed-Solomon encoding.